﻿Imports System.IO

Public Class GestionPedidos
    Private _Pedidos As New List(Of Pedido)
    Public ReadOnly Property Pedidos As ObjectModel.ReadOnlyCollection(Of Pedido)
        Get
            Return _Pedidos.AsReadOnly
        End Get
    End Property
    Public Sub New()
        If Not Directory.Exists(My.Application.Info.DirectoryPath & "\Ficheros") Then
            Directory.CreateDirectory(My.Application.Info.DirectoryPath & "\Ficheros")
        End If
        Dim fich As StreamReader
        If File.Exists(My.Application.Info.DirectoryPath & "\Ficheros\" & "Pedidos.txt") Then
            Try
                fich = New StreamReader(My.Application.Info.DirectoryPath & "\Ficheros\" & "Pedidos.txt")
                Do Until fich.EndOfStream
                    Dim datos() As String
                    Dim Linea As String
                    Linea = fich.ReadLine
                    'Dim ped As New Pedido(datos(0), datos(1))

                    datos = Linea.Split("*")
                    Dim listPed As New List(Of ProductoPedido)
                    For i As Integer = 1 To datos(2)
                        Linea = fich.ReadLine
                        Dim datosPed() As String = Linea.Split("*")
                        listPed.Add(New ProductoPedido(datosPed(0), datosPed(1)))
                    Next
                    _Pedidos.Add(New Pedido(datos(0), datos(1), listPed))
                    'ped.ListaProductos = listPed

                    listPed.Clear()
                Loop
            Catch ex As Exception
                _Pedidos.Clear()
            Finally
                fich.Close()


            End Try
        Else
            Grabar()

        End If
    End Sub
    Private Function Grabar() As String
        Dim fichero As StreamWriter
        Try
            File.Delete(My.Application.Info.DirectoryPath & "\Ficheros\" & "Pedidos.txt")
            fichero = New StreamWriter(My.Application.Info.DirectoryPath & "\Ficheros\" & "Pedidos.txt")
            For i As Integer = 0 To _Pedidos.Count - 1
                fichero.WriteLine(_Pedidos(i).NombreCliente & "*" & _Pedidos(i).Fecha & "*" & _Pedidos(i).ListaProductos.Count)
                For j As Integer = 0 To _Pedidos(i).ListaProductos.Count - 1
                    fichero.WriteLine(_Pedidos(i).ListaProductos(j).Nombre & "*" & _Pedidos(i).ListaProductos(j).Cantidad)
                Next
            Next

        Catch ex As Exception
            fichero.Close()
            Return ex.Message
        End Try
        fichero.Close()
        Return ""
    End Function
    Public Function Eliminar(ByVal pedido As Pedido) As String
        If pedido.NombreCliente = "Error" Then
            Return "No se encuentra el pedido"
        End If
        Dim sino As Boolean = False
        For i As Integer = 0 To _Pedidos.Count - 1
            If _Pedidos(i).Equals(pedido) Then
                _Pedidos.RemoveAt(i)
                sino = True
            End If
        Next
        If sino = False Then
            Return "No se encuentra el pedido"
        End If
        Grabar()
        Return ""

    End Function
    Public Function Añadir(ByVal pedido As Pedido) As String
        If pedido.NombreCliente = "Error" Then
            Return "No se puede añadir este pedido"
        End If
        If pedido.ListaProductos.Count = 0 Then
            Return ("Error, no hay productos")
        End If
        For i As Integer = 0 To pedido.ListaProductos.Count - 1
            If pedido.ListaProductos(i).Nombre = "Error" OrElse pedido.ListaProductos(i).Nombre = "Error, no existe ese producto" Then
                Return "No se puede añadir este pedido"
            End If

        Next
        _Pedidos.Add(pedido)
        Grabar()
        Return ""
    End Function
End Class
